<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   
      <title>Cap&iacute;tulo 2. Conceptos t&eacute;cnicos de gvHidra</title>
      <meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2">
      <link rel="home" href="indice.html" title="Manual Usuario gvHidra">
      <link rel="up" href="Parte_1.html" title="Parte&nbsp;I.&nbsp;Empezando con gvHidra">
      <link rel="prev" href="ch01s05.html" title="1.5. Creando mi &#8220;hola mundo&#8221; en gvHidra">
      <link rel="next" href="ch02s02.html" title="2.2. Aspecto visual">
   </head>
   <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
      <div class="navheader">
         <table width="100%" summary="Navigation header">
            <tr>
               <th colspan="3" align="center">Cap&iacute;tulo 2. Conceptos t&eacute;cnicos de gvHidra</th>
            </tr>
            <tr>
               <td width="20%" align="left"><a accesskey="p" href="ch01s05.html">Anterior</a>&nbsp;
               </td>
               <th width="60%" align="center">Parte&nbsp;I.&nbsp;Empezando con gvHidra</th>
               <td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s02.html">Siguiente</a></td>
            </tr>
         </table>
         <hr>
      </div>
      <div class="chapter" title="Cap&iacute;tulo 2. Conceptos t&eacute;cnicos de gvHidra">
         <div class="titlepage">
            <div>
               <div>
                  <h2 class="title"><a name="d4e276"></a>Cap&iacute;tulo 2. Conceptos t&eacute;cnicos de gvHidra
                  </h2>
               </div>
            </div>
         </div>
         <div class="toc">
            <p><b>Tabla de contenidos</b></p>
            <dl>
               <dt><span class="section"><a href="ch02.html#d4e280">2.1. Arquitectura</a></span></dt>
               <dd>
                  <dl>
                     <dt><span class="section"><a href="ch02.html#d4e283">2.1.1. Arquitectura por capas</a></span></dt>
                     <dt><span class="section"><a href="ch02.html#d4e317">2.1.2. Configuraci&oacute;n</a></span></dt>
                  </dl>
               </dd>
               <dt><span class="section"><a href="ch02s02.html">2.2. Aspecto visual</a></span></dt>
               <dd>
                  <dl>
                     <dt><span class="section"><a href="ch02s02.html#d4e343">2.2.1. Anatom&iacute;a de una ventana gvHidra</a></span></dt>
                     <dt><span class="section"><a href="ch02s02.html#d4e367">2.2.2. Modos de trabajo y ventanas gvHidra</a></span></dt>
                     <dt><span class="section"><a href="ch02s02.html#d4e415">2.2.3. Patrones de interfaz</a></span></dt>
                  </dl>
               </dd>
               <dt><span class="section"><a href="ch02s03.html">2.3. L&oacute;gica de negocio</a></span></dt>
               <dd>
                  <dl>
                     <dt><span class="section"><a href="ch02s03.html#d4e523">2.3.1. Acciones y operaciones</a></span></dt>
                  </dl>
               </dd>
            </dl>
         </div>
           
         
           
         <p>En este cap&iacute;tulo vamos a ver algunos conceptos te&oacute;ricos que son
              necesarios antes de empezar a desarrollar aplicaciones con el framework. Con
              toda la informaci&oacute;n que comprende seremos capaces de entender e interpretar
              cada uno de los pasos que realicemos en cap&iacute;tulos posteriores.
         </p>
         
           
         <p>Se ver&aacute;n conceptos relativos a la arquitectura de las aplicaciones, a
              la interfaz con el usuario y a la l&oacute;gica de negocio.
         </p>
         
           
         <div class="section" title="2.1. Arquitectura">
            <div class="titlepage">
               <div>
                  <div>
                     <h2 class="title" style="clear: both"><a name="d4e280"></a>2.1. Arquitectura
                     </h2>
                  </div>
               </div>
            </div>
                
            
                
            <p>gvHIDRA, como se ha comentado, es un proyecto opensource que se ha
                   desarrollado para poder ser desplegado en entornos heterogeneos. Para ello
                   su confirguraci&oacute;n interna se ha organizado en una estructura de capas que
                   permite redefinir los par&aacute;metros, crear clases espec&iacute;ficas o cambiar el
                   aspecto de cada una de nuestras aplicaciones.
            </p>
            
                
            <div class="section" title="2.1.1. Arquitectura por capas">
               <div class="titlepage">
                  <div>
                     <div>
                        <h3 class="title"><a name="d4e283"></a>2.1.1. Arquitectura por capas
                        </h3>
                     </div>
                  </div>
               </div>
                     
               
                     
               <p>Concretamente, el framework ofrece tres capas:</p>
               
                     
               <div class="mediaobject" align="center"><img src="images/capasgvHIDRA.png" align="middle"></div>
               
                     
               <p></p>
               
                     
               <div class="orderedlist">
                  <ol class="orderedlist" type="1">
                     <li class="listitem">
                                  
                        <p><span class="bold"><strong>core:</strong></span> es la capa propia de
                                     los ficheros del framework. Est&aacute; ubicada en el directorio igep y
                                     contiene ficheros de configuraci&oacute;n propios del proyecto.
                        </p>
                                
                     </li>
                     <li class="listitem">
                                  
                        <p><span class="bold"><strong>custom:</strong></span> destinado a las
                                     configuraciones propias de la entidad donde se despliega la
                                     aplicaci&oacute;n. Generalmente, la organizaci&oacute;n donde se despliegue una
                                     aplicaci&oacute;n tiene una serie de caracter&iacute;sticas propias:
                        </p>
                        
                                  
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="disc">
                              <li class="listitem">
                                               
                                 <p>aspecto: se puede configurar a partir de css e
                                                  im&aacute;genes.
                                 </p>
                                             
                              </li>
                              <li class="listitem">
                                               
                                 <p>definici&oacute;n de listas o ventanas de selecci&oacute;n generales
                                                  (municipios, provincias, terceros, ...).
                                 </p>
                                             
                              </li>
                              <li class="listitem">
                                               
                                 <p>clases propias, tipos, ws, ...</p>
                                             
                              </li>
                              <li class="listitem">
                                               
                                 <p>configuraciones propias: conexiones a BBDD corporativas,
                                                  acceso a datos comunes, formato de las fechas...
                                 </p>
                                             
                              </li>
                           </ul>
                        </div>
                                
                     </li>
                     <li class="listitem">
                                  
                        <p><span class="bold"><strong>app:</strong></span> cada aplicaci&oacute;n tiene
                                     una configuraci&oacute;n propia:
                        </p>
                        
                                  
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="disc">
                              <li class="listitem">
                                               
                                 <p>acceso a la BBDD propios de la aplicaci&oacute;n.</p>
                                             
                              </li>
                              <li class="listitem">
                                               
                                 <p>listas y ventanas de selecci&oacute;n propias de la
                                                  aplicaci&oacute;n.
                                 </p>
                                             
                              </li>
                              <li class="listitem">
                                               
                                 <p>configuraciones propias de la aplicaci&oacute;n: nombre
                                                  aplicaci&oacute;n, versi&oacute;n, modo de debug/auditoria, comportamiento de
                                                  la b&uacute;squeda, ...
                                 </p>
                                             
                              </li>
                           </ul>
                        </div>
                                
                     </li>
                  </ol>
               </div>
               
                     
               <p>Resumiendo, debemos tener en cuenta que hay varios niveles dentro
                        de la arquitectura de una aplicaci&oacute;n gvHIDRA y que en aras de la
                        reutilizaci&oacute;n, conviene definir un custom propio de la organizaci&oacute;n en
                        la que nos encontramos.
               </p>
                   
            </div>
            
                
            <div class="section" title="2.1.2. Configuraci&oacute;n">
               <div class="titlepage">
                  <div>
                     <div>
                        <h3 class="title"><a name="d4e317"></a>2.1.2. Configuraci&oacute;n
                        </h3>
                     </div>
                  </div>
               </div>
                     
               
                     
               <p>En cuanto a la carga de la configuraci&oacute;n, el framework la realiza
                        en dos fases consecutivas siguiendo en cada una de ellas el orden
                        (core/custom/app). Las dos fases se corresponden con:
               </p>
               
                     
               <div class="itemizedlist">
                  <ul class="itemizedlist" type="disc">
                     <li class="listitem">
                                  
                        <p><span class="bold"><strong>carga est&aacute;tica:</strong></span> esta fase
                                     carga los par&aacute;metros que est&eacute;n ubicados en el fichero de
                                     configuraci&oacute;n gvHidraConfig.inc.xml . Tenemos un fichero de este
                                     tipo en cada uno de las capas que se cargar&aacute;n en este orden
                        </p>
                        
                                  
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="circle">
                              <li class="listitem">
                                               
                                 <p>igep/gvHidraConfig.inc.xml: fichero de configuraci&oacute;n
                                                  propio del framework. No debe ser modificado ya que contiene los
                                                  par&aacute;metros propios del framework.
                                 </p>
                                             
                              </li>
                              <li class="listitem">
                                               
                                 <p>igep/custom/xxx/gvHidraConfig.inc.xml: fichero de
                                                  configuraci&oacute;n de la organizaci&oacute;n. Aqu&iacute; se definir&aacute;n las
                                                  configuraciones propias de la organizaci&oacute;n.
                                 </p>
                                             
                              </li>
                              <li class="listitem">
                                               
                                 <p>gvHidraConfig.inc.xml:fichero de configuraci&oacute;n propio de
                                                  la aplicaci&oacute;n.
                                 </p>
                                             
                              </li>
                           </ul>
                        </div>
                                
                     </li>
                     <li class="listitem">
                                  
                        <p><span class="bold"><strong>carga din&aacute;mica:</strong></span> esta fase, se
                                     realiza una vez acabada la anterior, con lo que machacar&aacute; las
                                     configuraciones que se hayan realizado. Puede ser muy &uacute;til para
                                     fijar configuraciones de forma din&aacute;mica (dependiendo del entorno de
                                     trabajo), pero es peligroso, ya que puede ser dif&iacute;cil depurar un
                                     error. Los ficheros por capa se ejecutar&aacute;n en el siguiente
                                     orden:
                        </p>
                        
                                  
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="circle">
                              <li class="listitem">
                                               
                                 <p>gep/actions/gvHidraMainWindow.php: fija la configuraci&oacute;n
                                                  din&aacute;mica del framework. No debe ser modificado.
                                 </p>
                                             
                              </li>
                              <li class="listitem">
                                               
                                 <p>igep/custom/xxx/ actions/CustomMainWindow.php: fija la
                                                  configuraci&oacute;n din&aacute;mica de la organizaci&oacute;n. En este fichero se
                                                  deben definir las listas y ventanas de selecci&oacute;n de la
                                                  organizaci&oacute;n.
                                 </p>
                                             
                              </li>
                              <li class="listitem">
                                               
                                 <p>actions/principal/AppMainWindow.php: fija la configuraci&oacute;n
                                                  din&aacute;mica de la aplicaci&oacute;n. En este fichero se deben definir las
                                                  listas y ventanas de selecci&oacute;n propias de la aplicaci&oacute;n.
                                 </p>
                                             
                              </li>
                           </ul>
                        </div>
                                
                     </li>
                  </ul>
               </div>
                   
            </div>
              
         </div>
         
           
         
           
         
      </div>
      <div class="navfooter">
         <hr>
         <table width="100%" summary="Navigation footer">
            <tr>
               <td width="40%" align="left"><a accesskey="p" href="ch01s05.html">Anterior</a>&nbsp;
               </td>
               <td width="20%" align="center"><a accesskey="u" href="Parte_1.html">Subir</a></td>
               <td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s02.html">Siguiente</a></td>
            </tr>
            <tr>
               <td width="40%" align="left" valign="top">1.5. Creando mi &#8220;hola mundo&#8221; en gvHidra&nbsp;</td>
               <td width="20%" align="center"><a accesskey="h" href="indice.html">Inicio</a></td>
               <td width="40%" align="right" valign="top">&nbsp;2.2. Aspecto visual</td>
            </tr>
         </table>
      </div>
   </body>
</html>